import axios from 'axios'
import Assert from '../common/Assert.js'

/**
 * 客户服务类
 */
export default class ClientService {
    static clientService = null
    requestUrl = 'http://localhost/clients'

    static getInstance() {
        if (this.clientService == null) {
            this.clientService = new ClientService()
        }
        return this.clientService
    }

    /**
     * 检查的方法
     * @param client
     */
    check(client) {
        //验证必填项是否为空
        if (!Assert.isNotNull(client.client, '请输入客户名')) {
            return false
        }
        if (!Assert.isNotNull(client.phone, '请输入手机号')) {
            return false
        }
        if(!Assert.validPhone(client.phone, '请输入正确的手机号')){
            return false
        }
        if (!Assert.isNotNull(client.type, '请选择客户类型')) {
            return false
        }
        if (!Assert.isNotNull(client.cardnum, '请输入客户证件号')) {
            return false
        }
        if(!Assert.validIdCard(client.cardnum, '请输入有效的证件号')){
            return false
        }
        if (!Assert.isNotNull(client.typeinfo, '请选择客户身份')) {
            return false
        }
        return true
    }

    /**
     * 查询列表的方法
     * @param params
     * @returns {Promise<AxiosResponse<T>>}
     */
    list(params) {
        return axios.get(this.requestUrl, {
            params
        })
    }

    /**
     * 保存的方法
     * @param client
     * @returns {Promise<AxiosResponse<T>>}
     */
    save(client) {
        return axios.post(this.requestUrl, client)
    }


    /**
     * 分页查询的方法
     * @param params
     * @returns {Promise<AxiosResponse<T>>}
     */
    getByPage(params) {
        return axios.get(`${this.requestUrl}/page`, {
            params
        })
    }

    /**
     * 根据id查询客户
     * @param id
     */
    getById(id) {
        return axios.get(`${this.requestUrl}/${id}`)
    }

    /**
     * 修改客户
     * @param client
     */
    update(client) {
        return axios.put(this.requestUrl, client)
    }

    /**
     * 根据登陆用户获取客户
     */
    getByUser() {
        return axios.get(`${this.requestUrl}/user`)
    }
}
